package com.jokins.common.util.ip;

import org.json.JSONObject;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;

public class IpLocationQuery {

    public String getAddressByIP(String strIP) {
        try {
            // 构建请求 URL
            URL url = new URL("https://ipapi.co/" + strIP + "/json/");
            // 打开连接
            URLConnection conn = url.openConnection();
            // 创建 BufferedReader 读取响应数据
            BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
            String line;
            // 用于存储读取的 JSON 数据
            StringBuilder result = new StringBuilder();
            // 逐行读取响应数据并追加到 StringBuilder 中
            while ((line = reader.readLine()) != null) {
                result.append(line);
            }
            // 关闭 BufferedReader
            reader.close();

            // 解析 JSON 数据，注意这里使用 result.toString()
            JSONObject json = new JSONObject(result.toString());
            // 获取 city 字段的值
            String location=json.getString("country_name")+"."+json.getString("city");
            return location;
        } catch (IOException e) {
            // 打印异常堆栈信息
            e.printStackTrace();
        } catch (Exception e) {
            // 处理 JSON 解析异常等其他异常
            e.printStackTrace();
        }
        return "读取失败";
    }

    public static void main(String[] args) {
        // 创建 IpLocationQuery 实例
        IpLocationQuery query = new IpLocationQuery();
        // 调用 getAddressByIP 方法获取 IP 地址对应的城市信息
        String location = query.getAddressByIP("43.230.10.127");
        // 打印城市信息
        System.out.println(location);
    }
}